package tree.arrayBinaryTree;

/**
 * 顺序存储二叉树，对二叉树的前中序=对数组对遍历
 * 顺序存储二叉树应用实例，堆排序
 */
public class ArrayBinaryTree {
    public static void main(String[] args) {
        int []arr = {1,2,3,4,5,6,7};
        ArrayBinaryTree arrayBinaryTree = new ArrayBinaryTree(arr);
        arrayBinaryTree.preOrder();  //1 2 4 5 3 6 7
    }
    private int[]array;

    public ArrayBinaryTree(int[] array) {
        this.array = array;
    }

    /**
     * 前序遍历数组
     * n表示数组的下标也表示树中节点的位置
     */
    public void preOrder(int n){
        if (array==null || array.length==0){
            System.out.println("数组为空，不能按照二叉树的前序遍历");
            return;
        }
        System.out.println(array[n]);
        if(2*n+1<array.length){
            preOrder(2*n+1);
        }
        if (2*n+2<array.length){
            preOrder(2*n+2);
        }
    }

    /**
     * 方法重载 更简便
     */
    public void preOrder(){
        preOrder(0);
    }
}
